@火鳳凰
2年前 提問
1個回答
什么是花指令?
安全小白成長記
2年前
花指令實際上把它按照“亂指令”來理解可能更貼切一些。我們知道,匯編語言其實就是機器指令的符號化,從某種程度上看,它只是更容易理解一點的機器指令而已。每一條匯編語句,在匯編時,都會根據cpu特定的指令符號表將匯編指令翻譯成二進制代碼。
而日常應用中,我們通過VC的IDE或其它如OD等反匯編、反編譯軟件也可以將一個二進制程序反匯編成匯編代碼。機器的一般格式為:指令+數據。
而反匯編的大致過程是:首先會確定指令開始的首地址,然后根據這個指令字判斷是哪個匯編語句,然后再將后面的數據反匯編出來。由此,我們可以看到,在這一步的反匯編過程中存在漏洞:如果有人故意將錯誤的機器指令放在了錯誤的位置,那反匯編時,就有可能連同后面的數據一起錯誤地反匯編出來,這樣,我們看到的就可能是一個錯誤的反匯編代碼。這就是“花指令”,簡而言之,花指令是利用了反匯編時單純根據機器指令字來決定反匯編結果的漏洞。使得殺毒軟件不能正常的判斷病毒文件的構造。說通俗點就是“殺毒軟件是從頭到腳按順序來查找病毒。如果我們把病毒的頭和腳顛倒位置。殺毒軟件就找不到病毒了。”